# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Language.V1.Model.XPSFloat64Stats do
  @moduledoc """
  The data statistics of a series of FLOAT64 values.

  ## Attributes

  *   `commonStats` (*type:* `GoogleApi.Language.V1.Model.XPSCommonStats.t`, *default:* `nil`) - 
  *   `histogramBuckets` (*type:* `list(GoogleApi.Language.V1.Model.XPSFloat64StatsHistogramBucket.t)`, *default:* `nil`) - Histogram buckets of the data series. Sorted by the min value of the bucket, ascendingly, and the number of the buckets is dynamically generated. The buckets are non-overlapping and completely cover whole FLOAT64 range with min of first bucket being `"-Infinity"`, and max of the last one being `"Infinity"`.
  *   `mean` (*type:* `float()`, *default:* `nil`) - The mean of the series.
  *   `quantiles` (*type:* `list(float())`, *default:* `nil`) - Ordered from 0 to k k-quantile values of the data series of n values. The value at index i is, approximately, the i*n/k-th smallest value in the series; for i = 0 and i = k these are, respectively, the min and max values.
  *   `standardDeviation` (*type:* `float()`, *default:* `nil`) - The standard deviation of the series.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :commonStats => GoogleApi.Language.V1.Model.XPSCommonStats.t() | nil,
          :histogramBuckets =>
            list(GoogleApi.Language.V1.Model.XPSFloat64StatsHistogramBucket.t()) | nil,
          :mean => float() | nil,
          :quantiles => list(float()) | nil,
          :standardDeviation => float() | nil
        }

  field(:commonStats, as: GoogleApi.Language.V1.Model.XPSCommonStats)

  field(:histogramBuckets,
    as: GoogleApi.Language.V1.Model.XPSFloat64StatsHistogramBucket,
    type: :list
  )

  field(:mean)
  field(:quantiles, type: :list)
  field(:standardDeviation)
end

defimpl Poison.Decoder, for: GoogleApi.Language.V1.Model.XPSFloat64Stats do
  def decode(value, options) do
    GoogleApi.Language.V1.Model.XPSFloat64Stats.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Language.V1.Model.XPSFloat64Stats do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
